Rust: Option
#Rust
Rustにおいて、値が無いかもしれない・値を返せないかもしれない場合に使えるRust: Enum
値がないことを示す None と、値を内包する Some(value) で構成される
他言語における null に近い概念
上述したとおり、enum (列挙型) として実装されている
enumが値のタプルを保有できるRustならではの定義
https://doc.rust-lang.org/rust-by-example/std/option.html
https://doc.rust-lang.org/std/option/enum.Option.html
Try trait
OptionにはRust: Try traitが実装されている
Optionを返す関数やクロージャ内であれば、式の後ろに ? をつけることで、値の取り出しまたは早期リターンができるようになっている
https://doc.rust-lang.org/std/option/enum.Option.html#impl-Try-for-Option%3CT%3E
Option.and_then と組み合わせると、長めのSome外しが短く書けて良い
https://doc.rust-lang.org/std/option/enum.Option.html#method.and_then
Iterator.filter_map
Rust: Iteratorには filter_map というメソッドが用意されており、Optionを返すクロージャを渡すことで None を振り落としながらmapすることができる
https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.filter_map